In a client-server architecture, such as a miroservice architecture employing clients and servers, a client may send a request to a server to perform a certain service or a task, such as a microservice, that is needed by the client. The request is sent to the server using a certain protocol, such as a remote-procedure-call (RPC) protocol, in which the requestor directs the request to a certain target device, which executes the task requested upon receiving the request. In such client-server architectures, the task requested is often associated with data components, such as code segments and data sets, which are needed for execution of the task requested. Various parameters, such as load conditions, latency performance, and communication bandwidth availability may greatly affect performance in such client-server architectures. When a client decides to send a request to a certain target device or server, the result may be sub-optimal in respect to: (i) the time it takes the server to execute the requested task and respond, (ii) the efficiency of allocating computational resources in the server in conjunction with executing the requested task, and (iii) the ability of the server to handle a large number of requests simultaneously in an effective way.